/* ____ _ __ _ _ _
| _ \ _ __ ___ _ __ ___ | |/ /__ _ _ __ ___ __ _| | | | __ _(_)_ __
| |_) | '__/ _ \ '_ ` _ \ | ' // _` | '_ ` _ \ / _` | | _ | |/ _` | | '_ \
| __/| | | __/ | | | | | | . \ (_| | | | | | | (_| | | | |_| | (_| | | | | |
|_| |_| \___|_| |_| |_| |_|\_\__,_|_| |_| |_|\__,_|_| \___/ \__,_|_|_| |_|
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef unsigned long long ull;
typedef long double lld;
#define hell 1000000007
#define PI 3.141592653589793238462
#define INF 1e18
#define vi vector<ll>
#define pb push_back
#define ppb pop_back
#define mii map<ll,ll>
#define pii pair<ll,ll>
#define mp make_pair
#define ff first
#define ss second
#define all(x) (x).begin(), (x).end()
/*____________________________________________________________________________________________________________________________________________________________________________________________________*/
vector<ll> sieve(int n) {int*arr = new int[n + 1](); vector<ll> vect; for (int i = 2; i <= n; i++)if (arr[i] == 0) {vect.push_back(i); for (int j = 2 * i; j <= n; j += i)arr[j] = 1;} return vect;}
ll mod_add(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a + b) % m) + m) % m;}
ll mod_mul(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a * b) % m) + m) % m;}
ll mod_sub(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a - b) % m) + m) % m;}
// ll mod_div(ll a, ll b, ll m) {a = a % m; b = b % m; return (mod_mul(a, mminvprime(b, m), m) + m) % m;} //only for prime m
ll expo(ll a, ll b, ll mod) {ll res = 1; while (b > 0) {if (b & 1)res = (res * a) % mod; a = (a * a) % mod; b = b >> 1;} return res;}
/*____________________________________________________________________________________________________________________________________________________________________________________________________*/
ll dfs(vi adj_list[], ll color[], bool visited[], ll current){
visited[current] = true;
ll ans = 0;
for(auto next_vertex : adj_list[current]){
if(!visited[next_vertex]){
if(color[next_vertex] != color[current]){
ans++;
}
ans += dfs(adj_list, color, visited, next_vertex);
}
}
return ans;
}
void solve()
{
ll n;
cin >> n;
vi adj_list[n + 1];
for(ll i = 2; i <= n; i++){
ll x;
cin >> x;
adj_list[i].pb(x);
adj_list[x].pb(i);
}
ll color[n + 1];
bool visited[n + 1];
for(ll i = 1; i <= n; i++){
cin >> color[i];
visited[i] = false;
}
ll ans = dfs(adj_list, color, visited, 1);
cout << ans + 1 << endl;
return;
}
int main()
{
ios_base::sync_with_stdio(false);
int t = 1;
// cin >> t;
for(ll i = 0; i < t; i++){
solve();
}
return 0;
}
2085. Count Common Words With One Occurrence | 2089. Find Target Indices After Sorting Array |
2090. K Radius Subarray Averages | 2091. Removing Minimum and Maximum From Array |
6. Zigzag Conversion | 1612B - Special Permutation |
1481. Least Number of Unique Integers after K Removals | 1035. Uncrossed Lines |
328. Odd Even Linked List | 1219. Path with Maximum Gold |
1268. Search Suggestions System | 841. Keys and Rooms |
152. Maximum Product Subarray | 337. House Robber III |
869. Reordered Power of 2 | 1593C - Save More Mice |
1217. Minimum Cost to Move Chips to The Same Position | 347. Top K Frequent Elements |
1503. Last Moment Before All Ants Fall Out of a Plank | 430. Flatten a Multilevel Doubly Linked List |
1290. Convert Binary Number in a Linked List to Integer | 1525. Number of Good Ways to Split a String |
72. Edit Distance | 563. Binary Tree Tilt |
1306. Jump Game III | 236. Lowest Common Ancestor of a Binary Tree |
790. Domino and Tromino Tiling | 878. Nth Magical Number |
2099. Find Subsequence of Length K With the Largest Sum | 1608A - Find Array |